import * as api from '../../api/common'; // 导入接口模块

Page({
  data: {
    orderId: 0,
    orderItems: [],
    checkedList: [],
    statusBarHeight: 0,
    height: 0,
    showRefund: false,
    activeTab: 'all', // 默认选中的Tab项
    orderList: [], // 订单列表数据
    loading: false, // 是否正在加载数据
    page: 1, // 当前加载的页数
    hasMore: true, // 是否还有更多数据可以加载
    searchKeyword: '', // 搜索关键词
  },
  checkboxChange: function (e) {
    this.setData({
      checkedList: e.detail.value
    })
  },
  showPopup(e) {
    const id = e.currentTarget.dataset.id;
    this.setData({
      orderId: id
    })
    this.getInfo()
  },
  preRefund(e) {
    let that = this;
    let id = e.currentTarget.dataset.id;
    tt.showModal({
      content: "确定需要退款吗",
      confirmText: "确定",
      cancelText: "关闭",
      success(res) {
        if (res.confirm) {
          that.handleRefund(id)
        }
        if (res.cancel) {}
      },
      fail(err) {
        console.log('showModal fail', err);
      },
      complete(res) {
        console.log('showModal complete', res);
      }
    });
  },
  async handleRefund(id) {
    if (!id) {
      return;
    } else {
      try {
        const {
          data, code
        } = await api.refund({
          orderItemIds: id
        });
        if (code) {
          tt.showToast({ title: '申请成功'});
          this.setData({
            page: 1, // 重置页数
            hasMore: true, // 重置更多数据标志
            orderList: [] // 清空订单列表
          });
          this.loadOrders(); // 加载对应状态的数据
          this.hidePopup();
        } else {
          tt.showToast({ title: data,  icon: 'none'  });
        }
      }  catch (error) {
        console.error('请求失败', error);
      }
    }
  },
  hidePopup() {
    this.setData({
      orderId: 0,
      orderItems: [],
      checkedList: [],
      showRefund: false
    })
  },
  async getInfo() {
    try {
      const {
        data
      } = await api.orderInfo({
        id: this.data.orderId
      });
      // const baseUrl = api.baseUrl + '/';
      
      // if (data.items[0]) {
      //   data.ticketInfo = data.items[0];
      //   data.ticketInfo.img = baseUrl + data.ticketInfo.img
      // }
      // if (data.ticketInfo) {
      //   if (data.ticketInfo.start_date) {
      //     let arr = data.ticketInfo.start_date.split('-')
      //     data.ticketInfo.start_date_f = arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
      //   }
      //   if (data.ticketInfo.end_date) {
      //     let arr = data.ticketInfo.end_date.split('-')
      //     data.ticketInfo.end_date_f = arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
      //   }
      // }
      let arr = data.items.map(item => ({...item, checked: false}))
      this.setData({
        orderItems: arr,
        showRefund: true
      })
    }  catch (error) {
      console.error('获取票据详情失败', error);
    }
  },

  onLoad: function (options) {
    const sysInfo = tt.getMenuButtonBoundingClientRect();
    this.setData({
      height: sysInfo.height,
      statusBarHeight: sysInfo.top,
    });
    this.loadOrders(); // 加载初始订单数据
  },

  // 加载订单数据
  async loadOrders(pageNum = 1, status = '') {
    if (this.data.loading || !this.data.hasMore) {
      return;
    }
  
    this.setData({
      loading: true
    });
  
    const userId = tt.getStorageSync('info').id; // 从缓存中获取用户ID
  
    try {
      const response = await api.orderList({
        userId: userId,
        name: this.data.searchKeyword,
        status: status || this.getStatusCode(this.data.activeTab),
        pageSize: 10,
        pageNum: pageNum,
      });
  
      let moreData = response.data.data || [];
      const totalPage = response.data.last_page;
      const currentPage = response.data.current_page;
  
      moreData.forEach(item => {
        if (item.start_date) {
          let arr = item.start_date.split('-')
          item.start_date_f = arr[0] + '年' + arr[1] + '月' + arr[2] + '日'
        }
        if (item.img) {
          item.img = `${api.baseUrl}/${item.img}`
        }
      })
      
      if (pageNum === 1) {
        // 如果是第一页数据，清空现有的订单列表
        this.setData({
          orderList: moreData,
          loading: false,
          page: currentPage + 1,
          hasMore: currentPage < totalPage
        });
      } else {
        // 如果是加载更多数据，追加到现有列表
        this.setData({
          orderList: this.data.orderList.concat(moreData),
          loading: false,
          page: currentPage + 1,
          hasMore: currentPage < totalPage
        });
      }
    } catch (error) {
      console.error('加载订单数据失败:', error);
      this.setData({
        loading: false
      });
    }
  },

  // 切换Tab
  switchTab(event) {
    const tab = event.currentTarget.dataset.tab;
    this.setData({
      activeTab: tab,
      page: 1, // 重置页数
      hasMore: true, // 重置更多数据标志
      orderList: [] // 清空订单列表
    });
    this.loadOrders(); // 加载对应状态的数据
  },

  // 获取Tab对应的状态码
  getStatusCode(tab) {
    switch (tab) {
      case 'pendingPayment': return '1';
      case 'completed': return '2';
      case 'apply': return '3';
      case 'canceled': return '4';
      case 'refunded': return '7';
      default: return ''; // 全部状态
    }
  },

  // 取消订单
  async cancelOrder(event) {
    const index = event.currentTarget.dataset.index;
    const order = this.data.orderList[index];

    try {
      await api.cancelOrder({ orderId: order.orderId });
      tt.showToast({ title: '订单已取消',  icon: 'none'  });
      this.loadOrders(); // 重新加载订单列表
    } catch (error) {
      console.error('取消订单失败:', error);
      tt.showToast({ title: '取消订单失败', icon: 'none' });
    }
  },

  // 立即支付
  async payOrder(event) {
    const index = event.currentTarget.dataset.index;
    const order = this.data.orderList[index];

    try {
      await api.payOrder({ orderId: order.orderId });
      tt.showToast({ title: '支付成功' });
      this.loadOrders(); // 重新加载订单列表
    } catch (error) {
      console.error('支付订单失败:', error);
      tt.showToast({ title: '支付失败', icon: 'none' });
    }
  },

  // 申请退款
  async refundOrder(event) {
    const index = event.currentTarget.dataset.index;
    const order = this.data.orderList[index];

    try {
      await api.refundOrder({ orderId: order.orderId });
      tt.showToast({ title: '退款申请成功' });
      this.loadOrders(); // 重新加载订单列表
    } catch (error) {
      console.error('申请退款失败:', error);
      tt.showToast({ title: '申请退款失败', icon: 'none' });
    }
  },

  // 输入搜索关键词
  onSearchInput(event) {
    this.setData({
      searchKeyword: event.detail.value
    });
  },

  // 搜索订单
  onSearchConfirm() {
    this.setData({
      page: 1, // 重置页数
      hasMore: true, // 重置更多数据标志
      orderList: [] // 清空订单列表
    });
    this.loadOrders(); // 根据关键词搜索订单
  },

  // 加载更多订单数据
  loadMoreOrders() {
    if (this.data.loading || !this.data.hasMore) {
      return;
    }
    this.loadOrders(this.data.page);
  },
  // 去详情
  toOrderDetail(e){
    let {id} = e.currentTarget.dataset

    tt.navigateTo({
      url: `./detail?id=${id}`,
      success: (res) => {
        
      },
      fail: (res) => {
        
      },
    });
  }
});
